package com.xiangxiao.rpan.settings.service;

import com.xiangxiao.rpan.settings.dto.SystemConfigDTO;

/**
 * @auther xiangxiao
 * @email 573768011@qq.com
 * @data 2023/6/9 15:57
 */
public interface SystemConfigService {

  /**
   * 获取系统设置, 如果缓存中有, 则去缓存取, 没有则查询数据库并写入到缓存中.
   *
   * @return  系统设置
   */
  SystemConfigDTO getSystemConfig();

  /**
   * 更新系统设置, 并清空缓存中的内容.
   *
   * @param   systemConfigDTO
   *          系统设置 dto
   */
  void updateSystemConfig(SystemConfigDTO systemConfigDTO);

  /**
   * 重置管理员登录信息, 重置登录账号为 admin, 密码为 123456, 登录校验方式为 图形验证码.
   */
  void resetAdminLoginInfo();

  /**
   * 获取 RSA Hex 格式密钥
   *
   * @return  RSA Hex 格式密钥
   */
  String getRsaHexKeyOrGenerate();

  /**
   * 获取系统是否已初始化
   *
   * @return  管理员名称
   */
  Boolean getSystemIsInstalled();

  /**
   * 获取后端站点域名
   *
   * @return  后端站点域名
   */
  String getDomain();

  /**
   * 获取前端站点域名
   *
   * @return  前端站点域名
   */
  String getFrontDomain();

  /**
   * 获取实际的前端站点域名
   *
   * @return  实际的前端站点域名
   */
  String getRealFrontDomain();

  /**
   * 获取前端地址下的 403 页面地址.
   *
   * @return 前端地址下的 403 页面地址
   */
  String getForbiddenUrl();
}
